public class test {
    //        写一个递归方法，输入一个非负整数，返回组成它的数字之和
    public static int numAdd(int n) {
        int sum = 0;
        if (n < 10) {
            return n;
        } else {
            sum = n % 10 + numAdd(n / 10);
        }
        return sum;
    }

    public static int fib(int n) {
        if(n == 1 || n == 2) {
            return 1;
        }
        return fib(n-1) + fib(n-2);
    }

    public static void move (char pos1,char pos2) {
        System.out.println(pos1 + "->" + pos2);
    }


    /**
     *
     * @param n 盘子数
     * @param pos1 起始位
     * @param pos2 中转位
     * @param pos3 目标位
     */
    public static void han(int n,char pos1,char pos2,char pos3) {
                if(n == 1) {
                    move(pos1, pos3);
                } else {
                    han(n-1,pos1, pos3,pos2);
                    move(pos1,pos3);
                    han(n-1,pos2,pos1,pos3);
                }
    }



    public static void main4(String[] args) {
//        递归求解汉诺塔问题
        han(4,'a','b','c');
    }

    public static void main3(String[] args) {
//        递归求斐波那契数列的第 N 项
        int n = 10;
        int ret = fib(n);
        System.out.println("斐波那契数列的第" +n +"项是" + ret);


    }




    public static void main1(String[] args) {

        int ret = numAdd(1234);
        System.out.println(ret);
    }



    public static void main2(String[] args) {
        //二维数组
        int[][] array1 = {{1, 2, 3}, {4, 5, 6}};

        int[][] array2 = new int[][]{{1, 2, 3}, {4, 5, 6}};

        int[][] array3 = new int[2][3];

        //遍历二维数组

        for (int i = 0; i < 2; i++) {
            for (int j = 0; j < 3; j++) {
                System.out.print(array1[i][j] + " ");
            }
            System.out.println();
        }

    }

    public static void main(String[] args) {
        int[][] array1 = {{1,2,3},{4,5,6}};

        System.out.println(array1);
        System.out.println(array1.length);
        System.out.println("===============");
        //遍历二维数组
        for(int i =0; i < array1.length;i++) {
            for(int j = 0; j < array1[i].length; j++) {
                System.out.print(array1[i][j] + " ");
            }
            System.out.println();
        }

        //不规则二维数组
        int[][] array2 = new int[2][];
        array2[0] = new int[5];
        array2[1] = new int[3];
        for(int i =0; i < array2.length;i++) {
            for(int j = 0; j < array2[i].length; j++) {
                System.out.print(array2[i][j] + " ");
            }
            System.out.println();
        }


        //
        int[][] array3 = new int[2][];

        //这种情况 如果第二个[] 没给定值的话
        //此数组的 一维数组形式 array3[0]  array3[1]  中储存的都是NULL 空指针
    }


}
